home *** CD-ROM | disk | FTP | other *** search
-
-
-
- RANDOM C Library Procedures RANDOM
-
-
-
- NNAAMMEE
- random, srandom, initstate, setstate - better random number
- generator; routines for changing generators
-
- SSYYNNOOPPSSIISS
- lloonngg rraannddoomm(())
-
- ssrraannddoomm((sseeeedd))
- iinntt sseeeedd;;
-
- cchhaarr **iinniittssttaattee((sseeeedd,, ssttaattee,, nn))
- uunnssiiggnneedd sseeeedd;;
- cchhaarr **ssttaattee;;
- iinntt nn;;
-
- cchhaarr **sseettssttaattee((ssttaattee))
- cchhaarr **ssttaattee;;
-
- DDEESSCCRRIIPPTTIIOONN
- _R_a_n_d_o_m uses a non-linear additive feedback random number
- generator employing a default table of size 31 long integers
- to return successive pseudo-random numbers in the range from
- 0 to (2**31)-1. The period of this random number generator
- is very large, approximately 16*((2**31)-1).
-
- _R_a_n_d_o_m/_s_r_a_n_d_o_m have (almost) the same calling sequence and
- initialization properties as _r_a_n_d/_s_r_a_n_d. The difference is
- that _r_a_n_d(3) produces a much less random sequence - in fact,
- the low dozen bits generated by rand go through a cyclic
- pattern. All the bits generated by _r_a_n_d_o_m are usable. For
- example, ``random()&01'' will produce a random binary value.
-
- Unlike _s_r_a_n_d, _s_r_a_n_d_o_m does not return the old seed; the rea-
- son for this is that the amount of state information used is
- much more than a single word. (Two other routines are pro-
- vided to deal with restarting/changing random number genera-
- tors). Like _r_a_n_d(3), however, _r_a_n_d_o_m will by default pro-
- duce a sequence of numbers that can be duplicated by calling
- _s_r_a_n_d_o_m with _1 as the seed.
-
- The _i_n_i_t_s_t_a_t_e routine allows a state array, passed in as an
- argument, to be initialized for future use. The size of the
- state array (in bytes) is used by _i_n_i_t_s_t_a_t_e to decide how
- sophisticated a random number generator it should use -- the
- more state, the better the random numbers will be. (Current
- "optimal" values for the amount of state information are 8,
- 32, 64, 128, and 256 bytes; other amounts will be rounded
- down to the nearest known amount. Using less than 8 bytes
- will cause an error). The seed for the initialization
- (which specifies a starting point for the random number
- sequence, and provides for restarting at the same point) is
- also an argument. _I_n_i_t_s_t_a_t_e returns a pointer to the
-
-
-
- Sprite v1.0 September 29, 1985 1
-
-
-
-
-
-
- RANDOM C Library Procedures RANDOM
-
-
-
- previous state information array.
-
- Once a state has been initialized, the _s_e_t_s_t_a_t_e routine pro-
- vides for rapid switching between states. _S_e_t_s_t_a_t_e returns
- a pointer to the previous state array; its argument state
- array is used for further random number generation until the
- next call to _i_n_i_t_s_t_a_t_e or _s_e_t_s_t_a_t_e.
-
- Once a state array has been initialized, it may be restarted
- at a different point either by calling _i_n_i_t_s_t_a_t_e (with the
- desired seed, the state array, and its size) or by calling
- both _s_e_t_s_t_a_t_e (with the state array) and _s_r_a_n_d_o_m (with the
- desired seed). The advantage of calling both _s_e_t_s_t_a_t_e and
- _s_r_a_n_d_o_m is that the size of the state array does not have to
- be remembered after it is initialized.
-
- With 256 bytes of state information, the period of the ran-
- dom number generator is greater than 2**69 which should be
- sufficient for most purposes.
-
- AAUUTTHHOORR
- Earl T. Cohen
-
- DDIIAAGGNNOOSSTTIICCSS
- If _i_n_i_t_s_t_a_t_e is called with less than 8 bytes of state
- information, or if _s_e_t_s_t_a_t_e detects that the state informa-
- tion has been garbled, error messages are printed on the
- standard error output.
-
- SSEEEE AALLSSOO
- rand(3)
-
- BBUUGGSS
- About 2/3 the speed of _r_a_n_d(3C).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Sprite v1.0 September 29, 1985 2
-
-
-
-